#include <bits/stdc++.h>
using namespace std;
// 解法一
//  int main()
//  {
//      string s1;getline(cin,s1);
//      if (s1.empty())return 0;
//      string s;
//      s += toupper(s1[0]);
//      for (int i = 1; i < s1.size(); ++i) {
//          if (s1[i] == ' ' && i + 1 < s1.size()) {
//              s += toupper(s1[i + 1]);
//              ++i;//跳过当前字符
//          }
//      }
//  }
// 解法二
//  int main()
//  {
//      string s;
//      while(cin>>s)
//      {
//          if(s[0]>='a'&&s[0]<='z')cout<<(char)(s[0]-32);
//          else cout<<s[0];
//      }
//      return 0;
//  }

//滑动窗口

//最小区间和为x且区间左端点值最小
// int main()
// {
//     int n,x;
//     cin>>n>>x;
//     int a[n];
//     for(int i=0;i<n;i++)cin>>a[i];
//     int sum=0,minlen=INT_MAX,minl=-1;
//     for(int left=0,right=0;right<n;right++)
//     {
//         sum+=a[right];
//         while(sum>=x)
//         {
//             if(right-left+1<minlen||(right-left+1)<minlen&&left<minl)
//             {
//                 minlen=right-left+1;
//                 minl=left;
//             }
//             sum-=a[left++];
//         }
//     }
//     cout<<minl+1<<" "<<minlen+minl<<endl;
//     return 0;
// }
using ll= long long;
int main()
{
    ll n,k,c,sum=0;
    priority_queue<int> pq;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>c;
        sum+=c;
        if(c%2==0)pq.push(c);
    }
    while(pq.size()&&k--)
    {
        ll t=pq.top()/2;
        pq.pop();
        sum-=t;
        if(t%2==0)pq.push(t);
    }
    cout<<sum<<endl;
    return 0;
    
}